package com.cw.realtime.macroSub


import scala.language.experimental.macros
import scala.reflect.macros.whitebox
import java.sql.ResultSet


object MacroUtil {
//
//  // macro definition
//  def createCaseClass4Jdbc[T]: ResultSet => T = macro createCaseClass4JdbcImpl[T]
//
//
//  // macro implement
//  def createCaseClass4JdbcImpl[T: c.WeakTypeTag](c: whitebox.Context): c.Expr[ResultSet => T] = {
//    import c.universe._
//    val tpe = weakTypeOf[T]
//
//    val params = tpe.decl(termNames.CONSTRUCTOR).asMethod.paramLists.flatten// 因为op参数不在表中
//    val args = params.zipWithIndex.map { case (p, i) =>
//      q"result.getString($i + 1)"
//    }
//    c.Expr[ResultSet => T](q"(result: ResultSet) => new $tpe(..$args)")
//  }
}
